home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Diamond Collection / The Diamond Collection (Software Vault)(Digital Impact).ISO / cdr44 / newmat08.zip / TMTB.CPP < prev    next >
C/C++ Source or Header  |  1995-01-11  |  4KB  |  121 lines

  1.  
  2. //#define WANT_STREAM
  3.  
  4. #include "include.h"
  5.  
  6. #include "newmat.h"
  7.  
  8.  
  9. /**************************** test program ******************************/
  10.  
  11. void Print(const Matrix& X);
  12. void Print(const UpperTriangularMatrix& X);
  13. void Print(const DiagonalMatrix& X);
  14. void Print(const SymmetricMatrix& X);
  15. void Print(const LowerTriangularMatrix& X);
  16.  
  17. void Clean(Matrix&, Real);
  18.  
  19. void trymatb()
  20. {
  21. //   cout << "\nEleventh test of Matrix package\n";
  22.    Tracer et("Eleventh test of Matrix package");
  23.    Exception::PrintTrace(TRUE);
  24.    int i; int j;
  25.    RowVector RV; RV.ReDimension(10);
  26.    {
  27.       Tracer et1("Stage 1");
  28.       for (i=1;i<=10;i++) RV(i)=i*i-3;
  29.       Matrix X(1,1); X(1,1) = .25;
  30.       Print(RowVector(X.i() * RV - RV / .25));
  31. //      Print(RowVector(X.i() * Matrix(RV) - RV / .25)); // != zortech, AT&T
  32.       Print(RowVector(X.i() * RV - RV / .25));
  33.    }
  34.    LowerTriangularMatrix L(5); UpperTriangularMatrix U(5);
  35.    for (i=1; i<=5; i++) for (j=1; j<=i; j++)
  36.    { L(i,j) = i*i + j -2.0; U(j,i) = i*i*j+3; }
  37.    DiagonalMatrix D(5);
  38.    for (i=1; i<=5; i++) D(i,i) = i*i + i + 2;
  39.    Matrix M1 = -L; Matrix M2 = L-U; Matrix M3 = U*3; Matrix M4 = U-L;
  40.    Matrix M5 = M1 - D; M1 = D * (-3) - M3;
  41.    {
  42.       Tracer et1("Stage 2");
  43.       Print(Matrix((M2-M4*2)+M5*3-M1));
  44.       M1 = L.t(); Print(Matrix(M1.t()-L));
  45.       M1 = U.t(); Print(Matrix(M1.t()-U));
  46.    }
  47.    {
  48.       Tracer et1("Stage 3");
  49.       SymmetricMatrix S(5);
  50.       for (i=1; i<=5; i++) for (j=1; j<=i; j++) S(i,j) = i*j+i-j+5;
  51.       M2 = S.i() * M4; M1 = S; M3=M1*M2-M4; Clean(M3,0.00000001); Print(M3);
  52.       SymmetricMatrix T(5);
  53.       for (i=1; i<=5; i++) for (j=1; j<=i; j++) T(i,j) = i*i*j*j+i-j+5-i*j;
  54.       M1 = S.i() * T; M1 = S * M1; M1 = M1-T; Clean(M1,0.00000001); Print(M1);
  55.       ColumnVector CV(5); for (i=1; i<=5; i++) CV(i) = i*i*i+10;
  56.       M1 = CV * RV;
  57.    }
  58.    {
  59.       Tracer et1("Stage 4");
  60.       M4.ReDimension(5,10);
  61.       for (i=1; i<=5; i++) for (j=1; j<=10; j++) M4(i,j) = (i*i*i+10)*(j*j-3);
  62.       Print(Matrix(M1-M4));
  63.       M1 = L.t(); M2 = U.t(); M3 = L+U; Print(Matrix(M1-M3.t()+M2));
  64.    }
  65. //   UpperTriangularMatrix U2((const UpperTriangularMatrix&)U); // != zortech
  66.    UpperTriangularMatrix U2((UpperTriangularMatrix&)U);
  67.    {
  68.       Tracer et1("Stage 5");
  69.       Print(Matrix(U2-U));
  70.       M2.ReDimension(10,10);
  71.       for (i=1; i<=10; i++) for (j=1; j<=10; j++) M2(i,j) = (i*i*i+10)*(j*j-3);
  72.       D << M2; L << M2; U << M2;               // check copy into
  73.       Print( Matrix( (D+M2)-(L+U) ) );
  74.    }
  75.    {
  76.       Tracer et1("Stage 6");
  77.       M1.ReDimension(6,10);
  78.       for (i=1; i<=6; i++) for (j=1; j<=10; j++)  M1(i,j) = 100*i + j;
  79.       M2 = M1.SubMatrix(3,5,4,7);  M3.ReDimension(3,4);
  80.       for (i=3; i<=5; i++) for (j=4; j<=7; j++)   M3(i-2,j-3) = 100*i + j;
  81.       Print(Matrix(M2-M3));
  82.    }
  83.    int a1,a2,a3,a4;
  84.    {
  85.       Tracer et1("Stage 7");
  86.       int a1,a2,a3,a4;
  87.       a1=4; a2=9; a3=4; a4=7;
  88.       U.ReDimension(10);
  89.       for (i=1; i<=10; i++) for (j=i; j<=10; j++)  U(i,j) = 100*i + j;
  90.       M2 = U.SubMatrix(a1,a2,a3,a4);
  91.       M3.ReDimension(a2-a1+1,a4-a3+1); M3=0.0;
  92.       for (i=a1; i<=a2; i++) for (j=(i>a3) ? i : a3; j<=a4; j++)
  93.          M3(i-a1+1,j-a3+1) = 100*i + j;
  94.       Print(Matrix(M2-M3));
  95.    }
  96.    {
  97.       Tracer et1("Stage 8");
  98.       a1=3; a2=9; a3=2; a4=7;
  99.       U.ReDimension(10);
  100.       for (i=1; i<=10; i++) for (j=i; j<=10; j++)  U(i,j) = 100*i + j;
  101.       M2 = U.SubMatrix(a1,a2,a3,a4);
  102.       M3.ReDimension(a2-a1+1,a4-a3+1); M3=0.0;
  103.       for (i=a1; i<=a2; i++) for (j=(i>a3) ? i : a3; j<=a4; j++)
  104.          M3(i-a1+1,j-a3+1) = 100*i + j;
  105.       Print(Matrix(M2-M3));
  106.    }
  107.    {
  108.       Tracer et1("Stage 9");
  109.       a1=4; a2=6; a3=2; a4=5;
  110.       U.ReDimension(10);
  111.       for (i=1; i<=10; i++) for (j=i; j<=10; j++)  U(i,j) = 100*i + j;
  112.       M2 = U.SubMatrix(a1,a2,a3,a4);
  113.       M3.ReDimension(a2-a1+1,a4-a3+1); M3=0.0;
  114.       for (i=a1; i<=a2; i++) for (j=(i>a3) ? i : a3; j<=a4; j++)
  115.          M3(i-a1+1,j-a3+1) = 100*i + j;
  116.       Print(Matrix(M2-M3));
  117.    }
  118.  
  119. //   cout << "\nEnd of eleventh test\n";
  120. }
  121.